package Q400;

/**
 * 第N位数字
 * 给你一个整数 n ，请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位数字。
 * @author 23737
 * @time 2021.11.30
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(new Solution().findNthDigit(1221));
    }
}

/**
 * 抄的 写不来
 */
class Solution {
    public int findNthDigit(int n) {
        int digit=1;
        long nine=9;
        long count=0;

        //按位数分组，并找到属于哪一组
        while(true){
            count=digit*nine;
            if(n<=count){
                break;
            }
            n-=count;
            digit++;
            nine*=10;
        }

        //定位到数字
        long num=(long)Math.pow(10,digit-1)+(n-1)/digit;
        //定位到具体某个字符
        char c=String.valueOf(num).charAt((n-1)%digit);
        return (int)(c-'0');

    }
}